package Demo08.Demo0815;


public class MyClass {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a > b ? 1 : 2; //这里注意   在这个条件运算符这里，表达式二和三也就是  ： 的两侧要是同类型的值
    }
    public static void main1(String[] args) {
        //现在的代码练习是对于   JavaSE这里运算符的按位取反有点疑问，然后彻底解决一下子
        int a = 10;
        System.out.println(~a);  //值是-11
        /*
        具体实现 ：源码 Ox0000 0000 0000 0000 0000 0000 0000 1010
                 这里正数的原码反码补码是一码事
                 取反的话：如果说是取反 Ox1111 1111 1111 1111 1111 1111 1111 0101  【这里特别说一下，就是它取反之后是补码！！】
                 这是补码的形式，然后得到反码 Ox1111 1111 1111 1111 1111 1111 1111 0100
                 再得到源码  Ox1000 0000 0000 0000 0000 0000 0000 1011   这里是-11
                 这是具体的实现
         */
        System.out.println("================================");

        //这里的代码是对于位运算符中的  异或   的练习，因为这里有比较特殊的
        int b1 = 0x555555;
        int c1 = 0xAAAAAA;
        int d1 = b1;
        System.out.println(b1^c1);
        System.out.println(b1^d1);


        int b2 = 0x55555555;
        int c2 = 0xAAAAAAAA;//然后这两个取反相等
        int d2 = b2;
        System.out.println(b2^c2);
        System.out.println(b2^d2);
        System.out.println(~b2);
        System.out.println(c2);
        //对于b2 和 c2的异或这里有点小问题，不应该是 -1 呀？
        /*
        0x0101 0101 0101 0101 0101 0101 0101 0101  所有奇数比特位上的全是1
        0x1010 1010 1010 1010 1010 1010 1010 1010   所有偶数比特位上全是1
        异或之后就是：
        0x1111 1111 1111 1111 1111 1111 1111 1111  这里是补码的形式
        0x1111 1111 1111 1111 1111 1111 1111 1110  这是反码
        0x1000 0000 0000 0000 0000 0000 0000 0001  这是源码
         */
    }
}

